[XEND] Better checking of shutdown of domain0.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 28 Jul 2006 16:35:39 +0000 (17:35 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 28 Jul 2006 16:35:39 +0000 (17:35 +0100)
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
tools/python/xen/xend/XendDomainInfo.py
tools/python/xen/xm/shutdown.py

index 0d97fe38ac8d7551d975cce004da92d031e2a1f4..35a014900d459542f85d52827c70a6c6bbc1bce3 100644 (file)
@@ -943,6 +943,8 @@ class XendDomainInfo:
     def shutdown(self, reason):
         if not reason in shutdown_reasons.values():
             raise XendError('Invalid reason: %s' % reason)
+        if self.domid == 0:
+            raise XendError("Can't specify Domain-0")
         self.storeDom("control/shutdown", reason)
 
 
index a72ec74f5bc086a5fdb7b393c33f1cf540727a97..7c974f80a9737f0dc2e8ac9803ced1bbb6c989b0 100644 (file)
@@ -23,8 +23,6 @@ from xen.xend.XendClient import server
 from xen.xend import sxp
 from xen.xm.opts import *
 
-DOM0_ID = '0'
-
 gopts = Opts(use="""[options] [DOM]
 
 Shutdown one or more domains gracefully.
@@ -51,14 +49,6 @@ gopts.opt('reboot', short='R',
           use='Shutdown and reboot.')
 
 def shutdown(opts, doms, mode, wait):
-    if doms == None: doms = server.xend.domains(0)
-    dom0_name = sxp.child_value(server.xend.domain(0), 'name')
-    for x in [dom0_name, DOM0_ID]:
-        if x in doms:
-            if opts.vals.all:
-                doms.remove(x)
-            else:
-                opts.err("Can't specify Domain-0")
     for d in doms:
         server.xend.domain.shutdown(d, mode)
     if wait:
@@ -86,8 +76,11 @@ def shutdown_mode(opts):
         return 'poweroff'
 
 def main_all(opts, args):
+    doms = server.xend.domains(0)
+    dom0_name = sxp.child_value(server.xend.domain(0), 'name')
+    doms.remove(dom0_name)
     mode = shutdown_mode(opts)  
-    shutdown(opts, None, mode, opts.vals.wait)
+    shutdown(opts, doms, mode, opts.vals.wait)
 
 def main_dom(opts, args):
     if len(args) == 0: opts.err('No domain parameter given')